home *** CD-ROM | disk | FTP | other *** search
-
- #include <exec/types.h>
- #include <math.h>
-
- #ifdef __SASC
- #define M_PI PI
- #else
- #define M_PI 3.1415927
- #endif
-
- float rnd(float max);
-
- float wa0[2], wa1[2], wa2[2], wa3[2], wa4[2], wa5[2], wa6[2], wa7[2], wa8[2];
- float wb0[2], wb1[2], wb2[2], wb3[2], wb4[2], wb5[2], wb6[2], wb7[2], wb8[2];
-
- extern ULONG TimeWave;
- extern WORD *PluginSamples;
-
-
- void InitWave(UBYTE WaveNum, ULONG BufNum) {
- float a0,a1,a2,a3,a4;
- a0=a1=a2=a3=a4=0.0;
- switch(WaveNum) {
- /****************************************/
- case 0:
- break;
- /****************************************/
- case 1:
- break;
- /****************************************/
- case 2:
- a0 = 0.1 + rnd(0.2);
- break;
- /****************************************/
- /** Radar Sweep **/
- case 3:
- a0 = 0.7 + rnd(1.1);
- break;
- /****************************************/
- /** Flower Power **/
- case 4:
- a0 = 2.0 + (float)((ULONG)(0.99 * rnd(4.0)));
- a1 = M_PI * (float)(2 - (ULONG)a0 % 2);
- a2 = 0.2 + rnd(0.2);
- a3 = 0.65 + rnd(0.22);
- break;
- /****************************************/
- /** Spinit **/
- case 5:
- a0 = 0.25 + rnd(0.4);
- break;
- /****************************************/
- /** Sine Waves **/
- case 6:
- break;
- /****************************************/
- /** Five **/
- case 7:
- a0 = cos(.3 + rnd(.6)) * 0.5;
- a1 = sin(.5 + rnd(.4)) * 0.5;
- a2 = cos(.1 + rnd(.8)) * 0.5;
- a3 = sin(.2 + rnd(.7)) * 0.5;
- a4 = cos(.6 + rnd(.3)) * 0.5;
- break;
- /****************************************/
- /** Rotating Arcs **/
- case 8:
- a0 = 0.5 + rnd(0.2);
- a1 = rnd(1.3) + 1.4;
-
- break;
-
-
- /****************************************/
- /** Horizontal Sweep **/
- case 9:
- break;
- /****************************************/
- /** NTPU Squared **/
- case 10:
- a0 = 0.3 + rnd(0.4);
- a1 = 0.4 * a0;
- break;
-
- /****************************************/
- /** Particle Pulse **/
- case 11:
- a0 = rnd(3)+1;
- break;
- /****************************************/
- }
- wa0[BufNum] = a0;
- wa1[BufNum] = a1;
- wa2[BufNum] = a2;
- wa3[BufNum] = a3;
- wa4[BufNum] = a4;
- }
-
- void CalcWave(UBYTE WaveNum, ULONG BufNum) {
- float tf;
- float a0,a1,a2,a3,a4;
- float b0,b1,b2,b3,b4,b5,b6,b7,b8;
-
- a0 = wa0[BufNum];
- a1 = wa1[BufNum];
- a2 = wa2[BufNum];
- a3 = wa3[BufNum];
- a4 = wa4[BufNum];
- b0 = 0;
- b1 = 0;
- b2 = 0;
- b3 = 0;
- b4 = 0;
- b5 = 0;
- b6 = 0;
- b7 = 0;
- b8 = 0;
- tf=((float)TimeWave) / 10.0;
- switch(WaveNum) {
- /****************************************/
- case 0:
- break;
- /****************************************/
- case 1:
- b0 = tf * 0.0003;
- break;
- /****************************************/
- case 2:
- b0 = cos(tf * 0.2);
- b1 = sin(tf * 0.2);
- break;
- /****************************************/
- /** Radar Sweep **/
- case 3:
- b0 = cos(tf * a0);
- b1 = sin(tf * a0);
- break;
- /****************************************/
- /** Flower Power **/
- case 4:
- b0 = tf;
- break;
- /****************************************/
- /** Spinit **/
- case 5:
- b0 = cos(a0 * tf);
- b1 = sin(a0 * tf);
- break;
- /****************************************/
- /** Sine Waves **/
- case 6:
- break;
- /****************************************/
- /** Five **/
- case 7:
- b0 = -1.0 * tf;
- b1 = .3 * tf;
- b2 = -.8 * tf + 1.23213;
- b3 = .3 * tf;
- b4 = -1.3 * tf;
- b5 = -1.1 * tf + 4.45245;
- b6 = -.63 * tf + 2.13213;
- b7 = .7 * cos(b1);
- b8 = .7 * sin(b1);
- break;
- /****************************************/
- /** Rotating Arcs **/
-
- case 8:
-
- b0 = 0.3 * tf;
-
- break;
-
- /****************************************/
- /** Horizontal Sweep **/
- case 9:
- b0 = sin(0.5*tf);
- break;
- /****************************************/
- /** NTPU Squared **/
-
- case 10:
- b0 = cos(tf * 0.18);
- b1 = sin(tf * 0.18);
- break;
-
- /****************************************/
- /** Particle Pulse **/
- case 11:
- b0 = tf * 0.0003;
- break;
- /****************************************/
- }
- wb0[BufNum] = b0;
- wb1[BufNum] = b1;
- wb2[BufNum] = b2;
- wb3[BufNum] = b3;
- wb4[BufNum] = b4;
- wb5[BufNum] = b5;
- wb6[BufNum] = b6;
- wb7[BufNum] = b7;
- wb8[BufNum] = b8;
- }
-
- void DrawWave(LONG *WaveX, LONG *WaveY, ULONG Width, ULONG Height, UBYTE WaveNum, ULONG BufNum) {
- LONG i,xs,ys,xd,yd;
- LONG k;
- LONG minx,maxx,miny,maxy;
-
- float scales,scaled,greater;
- float xsf,ysf;
- float xdf0,ydf0,xdf1,ydf1,xdf2,ydf2;
- float wf,hf,tf;
-
- float a0, a1, a2, a3, a4;
- float b0, b1, b2, b3, b4, b5, b6, b7, b8;
- float c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10;
- float cns1,cns2,cns3,cns4,cns5,cns6,cns7,cns8,cns9;
-
- a0 = wa0[BufNum];
- a1 = wa1[BufNum];
- a2 = wa2[BufNum];
- a3 = wa3[BufNum];
- a4 = wa4[BufNum];
-
- b0 = wb0[BufNum];
- b1 = wb1[BufNum];
- b2 = wb2[BufNum];
- b3 = wb3[BufNum];
- b4 = wb4[BufNum];
- b5 = wb5[BufNum];
- b6 = wb6[BufNum];
- b7 = wb7[BufNum];
- b8 = wb8[BufNum];
-
- wf=(float)Width;
- hf=(float)Height;
- tf=((float)TimeWave) / 10.0;
-
- cns1 = Width/2;
- cns2 = Height/2;
-
- minx = -(cns1) + 1;
- maxx = (cns1) - 1;
- miny = -(cns2) + 1;
- maxy = (cns2) - 1;
-
- greater=1.0;
- if(wf > greater) greater = wf;
- if(hf > greater) greater = hf;
-
- scales = 1.0 / greater;
- scaled = 1.0 / (greater/2.0);
-
- k=0;
- for(xs=0; xs<(Width); xs++) {
- ys = (PluginSamples[k++] >> 10) + (PluginSamples[k++] >> 10);
-
- xsf = ((float)xs) * scales;
- ysf = ((float)ys) / 256.0;
-
- switch(WaveNum) {
- /****************************************/
- case 0:
- xdf0 = 2*xsf-1;
- ydf0 = ysf * 0.75;
- xdf1 = xdf0;
- ydf1 = ydf0;
- break;
- /****************************************/
- case 1:
- c0 = ysf * 0.2 + .2;
- c1 = xsf * 6.28318530 + b0;
- xdf0 = c0 * cos(c1);
- ydf0 = c0 * sin(c1);
- xdf1 = xdf0;
- ydf1 = ydf0;
- break;
- /****************************************/
- case 2:
- cns3 = b0*c1;
- cns4 = b1*c0;
- cns5 = b0*c0;
- cns6 = b1*c1;
- c0 = ysf * 0.25 + .2;
- c1 = 2.1 * (xsf-0.5);
- xdf0 = cns3 + cns4;
- ydf0 = -cns5 + cns6;
- xdf1 = cns3 - cns4;
- ydf1 = cns5 + cns6;
- break;
- /****************************************/
- /** Radar Sweep **/
- case 3:
- c0 = ysf * 0.4 * xsf;
- xdf0 = -b0 * xsf - b1 * c0;
- ydf0 = b0 * c0 - b1 * xsf;
- xdf1 = xdf0;
- ydf1 = ydf0;
- break;
- /****************************************/
- /** Flower Power **/
- case 4:
- c0 = a1 * xsf;
- c1 = a3 * cos(a0*c0) + 0.18 * ysf;
- xdf0 = c1 * cos(c0+a2*b0);
- ydf0 = c1 * sin(c0+a2*b0);
- xdf1 = xdf0;
- ydf1 = ydf0;
- break;
- /****************************************/
- /** Spinit **/
- case 5:
- c0 = 2 * xsf - 1;
- c1 = ysf * 0.6 + c0;
- cns3 = b0*c1;
- cns4 = b1*c0;
- cns5 = b0*c0;
- cns6 = b1*c1;
- xdf0 = - cns5 - cns6;
- ydf0 = cns3 - cns4;
- xdf1 = - cns5 + cns6;
- ydf1 = cns3 + cns4;
- break;
- /****************************************/
- /** Sine Waves **/
-
- case 6:
- c0 = - sin(6.2831853 * xsf);
- c1 = 0.4 * ysf;
- xdf0 = 2.0 * xsf - 1 - c0 * c1;
- ydf0 = 0.7 * cos( 6.2831853 * xsf ) + sqrt( 1 - c0*c0 ) * c1;
- xdf1 = xdf0;
- ydf1 = -ydf0;
- break;
- /****************************************/
- /** Five **/
- case 7:
- cns9 = xsf - .1;
-
-
- c0 = b7 * cns9 + a0;
- c1 = b8 * cns9 + a0;
- c2 = .7 * cns9 * sin( b3 ) + a1;
- c3 = .7 * cns9 * cos( b3 ) + a1;
- c4 = b7 * cns9 + a2;
- c5 = b8 * cns9 + a2;
- c6 = b7 * cns9 + a3;
- c7 = b8 * cns9 + a3;
- c8 = b7 * cns9 + a4;
- c9 = b8 * cns9 + a4;
- c10 = .7 * ysf;
-
- switch(xs%5) {
- case 0:
- cns7 = c1 * sin(b0);
- cns8 = c0 * cos(b0);
-
- xdf0 = cns8 - cns7;
- ydf0 = cns7 + cns8 * c10;
- break;
- case 1:
- cns7 = c0 * sin(b2);
- cns8 = c1 * cos(b2);
-
- xdf0 = -(cns7 - cns8);
- ydf0 = -(cns8 + cns7 * c10);
- break;
- case 2:
- cns7 = c4 * sin(b4);
- cns8 = c5 * cos(b4);
-
- xdf0 = -(cns7 - cns8);
- ydf0 = -(cns8 + cns7 * c10);
- break;
- case 3:
- cns7 = c7 * sin(b5);
- cns8 = c6 * cos(b5);
-
- xdf0 = cns8 - cns7;
- ydf0 = cns7 + cns8 * c10;
- break;
- case 4:
- cns7 = c9 * sin(b6);
- cns8 = c8 * cos(b6);
-
- xdf0 = -cns8 - cns7;
- ydf0 = -cns7 + cns8 * c10;
- break;
- }
- xdf1 = xdf0;
- ydf1 = ydf0;
- break;
- /****************************************/
- /** Rotating Arcs **/
- case 8:
-
- c0 = a0 + .025 * ysf;
- c1 = b0 + a1 * xsf;
-
- xdf0 = c0 * cos(c1);
- ydf0 = c0 * sin(c1);
- xdf1 = c0 * cos(c1 + 3.14159);
- ydf1 = c0 * sin(c1 + 3.14159);
- break;
-
- /****************************************/
- /** Horizontal Sweep **/
- case 9:
- c0 = 2 * (xsf - 0.5);
- c1 = 0.7 * b0 + ysf * 0.25;
-
- xdf0 = c1;
- ydf0 = c0;
- xdf1 = -c1;
- ydf1 = c0;
- break;
- /****************************************/
- /** NTPU Squared **/
- case 10:
-
- c0 = a1 * ysf + a0;
- c1 = 2.0 * a0 * (xsf - 0.5);
- cns3 = b0*c1;
- cns4 = b1*c0;
- cns5 = b0*c0;
- cns6 = b1*c1;
-
-
- switch(xs%2) {
- case 0:
- xdf0 = cns3 + cns4;
- ydf0 = - cns5 + cns6;
- xdf1 = cns3 - cns4;
- ydf1 = cns5 + cns6;
- break;
- case 1:
- xdf0 = - cns3 - cns4;
- ydf0 = - cns5 + cns6;
- xdf1 = - cns3 + cns4;
- ydf1 = cns5 + cns6;
- break;
- }
- break;
-
- /****************************************/
- /** NTPU Squared **/
- case 11:
- c0 = fabs(ysf) * 0.85 + 0.05;
- c1 = xsf * 43.766877 - b0;
-
- cns7 = c0 * sin(c1);
- cns8 = c0 * cos(c1);
-
- switch(xs%2) {
- case 0:
-
- xdf0 = cns8;
- ydf0 = cns7;
- xdf1 = cns8+scaled;
- ydf1 = cns7;
- break;
-
- case 1:
- xdf0 = cns8;
- ydf0 = cns7+scaled;
- xdf1 = cns8;
- ydf1 = cns7+scaled;
- break;
- }
- break;
- /****************************************/
- }
-
- xd = xdf0/scaled;
- yd = ydf0/scaled;
- /**
- if(xd < minx) xd = minx;
- if(xd > maxx) xd = maxx;
- if(yd < miny) yd = miny;
- if(yd > maxy) yd = maxy;
- **/
- WaveX[xs] = xd;
- WaveY[xs] = yd;
-
- xd = xdf1/scaled;
- yd = ydf1/scaled;
- /**
- if(xd < minx) xd = minx;
- if(xd > maxx) xd = maxx;
- if(yd < miny) yd = miny;
- if(yd > maxy) yd = maxy;
- **/
- WaveX[xs+Width] = xd;
- WaveY[xs+Width] = yd;
- }
- }
-